// 20. 有效的括号
// 简单
// 相关标签
// 相关企业
// 提示
// 给定一个只包括 '('，')'，'{'，'}'，'['，']' 的字符串 s ，判断字符串是否有效。

// 有效字符串需满足：

// 左括号必须用相同类型的右括号闭合。
// 左括号必须以正确的顺序闭合。
// 每个右括号都有一个对应的相同类型的左括号。

// 示例 1：

// 输入：s = "()"

// 输出：true

// 示例 2：

// 输入：s = "()[]{}"

// 输出：true

// 示例 3：

// 输入：s = "(]"

// 输出：false

// 示例 4：

// 输入：s = "([])"

// 输出：true

// 提示：

// 1 <= s.length <= 104
// s 仅由括号 '()[]{}' 组成

var isValid = function (s) {
  const map = new Map();
  map.set(")", "(");
  map.set("]", "[");
  map.set("}", "{");
  const ans = [];
  for (const char of s) {
    const left = map.get(char);
    const right = ans.at(-1);
    if (left && right && left === right) {
      ans.pop();
    } else {
      ans.push(char);
    }
  }
  return ans.length === 0;
};

const ans = isValid("[{}()]");
console.log("ans: ", ans);
